package com.lry.sso.auth.server.service;

import com.lry.sso.auth.common.util.SessionInfo;

/**
 * token接口
 *
 * @author 李瑞益
 * @date 2019/9/5
 */
public interface JwtTokenService {

    /**
     * 获取用户公钥
     * @return 公钥
     */
    byte[] getUserPublicKey();

    /**
     * 获取并保存token
     * 根据不同存储方式实现
     * @param sessionInfo 用户信息
     * @return token
     */
    String getToken(SessionInfo sessionInfo) throws Exception;

    /**
     * 解析加密的密码
     * @param password 密码
     * @return 明文
     * @throws Exception
     */
    String parsePassword(String password) throws Exception;

    /**
     * 解析验证token
     * @param token 带解析的token
     * @throws Exception
     */
    SessionInfo parseToken(String token) throws Exception;

    /**
     * 获取过期时间
     * @param token 带解析token
     * @return 时间毫秒数
     * @throws Exception
     */
    Long getExpire(String token)  throws Exception;

}
